import axios from 'axios'
import { ElMessage } from 'element-plus'
import useUserStore from '@/store/modules/user'

const request = axios.create({
	// 基础路径
	baseURL: import.meta.env.VITE_APP_BASE_API,
	// 超时时间
	timeout: 5000,
})

// 请求拦截器
request.interceptors.request.use(
	// 成功的回调
	config => {
		const userStore = useUserStore()
		// token
		const token = userStore.token
		if (token) {
			config.headers.Token = token
		} else {
			// 如果请求当中没有携带token，应该让其去登录
		}
		return config
	},
	// 失败的回调
	error => {
		return Promise.reject(error)
	},
)

// 响应拦截器
request.interceptors.response.use(
	// 成功的回调
	response => {
		return response.data
	},
	// 失败的回调
	error => {
		console.log(error)
		let message = ''
		let status = error.response.status

		switch (status) {
			case 401:
				message = 'token已过期，请重新登录'
				break
			case 403:
				message = '权限不足，请联系管理员'
				break
			case 404:
				message = '请求地址错误'
				break
			case 500:
				message = '服务器崩溃啦~~~'
				break
			default:
				message = '网络错误，请稍后再试'
				break
		}

		ElMessage.error(message)

		return Promise.reject(error)
	},
)

export default request
